package com.dp.client.views.paquete;

import com.dp.client.dto.AlmacenDTO;
import com.dp.client.dto.ClienteDTO;
import com.dp.client.dto.RutasVueloEnvio;
import com.dp.client.dto.VueloEnvio;
import com.dp.client.servicios.MapaStatic.IServiciosMapaStatic;
import com.dp.client.servicios.MapaStatic.IServiciosMapaStaticAsync;
import com.dp.client.util.Alerts;
import com.dp.client.views.clientes.RutaPaqueteDialog;
import com.dp.client.views.clientes.WizardStage;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.CaptionPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TabPanel;
import com.google.gwt.user.client.ui.VerticalSplitPanel;
import com.google.gwt.user.client.ui.DockPanel;
import com.dp.client.views.clientes.DatosCliente;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.HorizontalSplitPanel;
import com.dp.client.views.almacenes.DatosAlmacen;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.ClickEvent;

public class ResumenPaquete extends Composite implements WizardStage {
	private VerticalPanel verticalPanel;
	private FlexTable flexTable;
	private CaptionPanel cptnpnlEmisor;
	private CaptionPanel cptnpnlReceptor;
	private DatosCliente datosCliente;
	private DatosCliente datosCliente_1;
	private HorizontalPanel horizontalPanel;
	private HorizontalPanel horizontalPanel_1;
	private HorizontalPanel horizontalPanel_2;
	private CaptionPanel cptnpnlAlmacenOrigen;
	private DatosAlmacen datosAlmacen;
	private CaptionPanel cptnpnlAlmacenDestino;
	private DatosAlmacen datosAlmacen_1;
	private CaptionPanel cptnpnlInformacionRutas;
	private FlexTable flexTable_1;
	private Label lblNewLabel;
	private Button btnVerRuta;
	
	public ResumenPaquete() {
		
		verticalPanel = new VerticalPanel();
		initWidget(verticalPanel);
		
		flexTable = new FlexTable();
		verticalPanel.add(flexTable);
		flexTable.setSize("512px", "324px");
		
		cptnpnlEmisor = new CaptionPanel("Emisor");
		flexTable.setWidget(0, 0, cptnpnlEmisor);
		cptnpnlEmisor.setSize("auto", "109px");
		
		datosCliente = new DatosCliente();
		cptnpnlEmisor.setContentWidget(datosCliente);
		datosCliente.setSize("447px", "47px");
		
		cptnpnlReceptor = new CaptionPanel("Receptor");
		flexTable.setWidget(1, 0, cptnpnlReceptor);
		cptnpnlReceptor.setSize("auto", "110px");
		
		datosCliente_1 = new DatosCliente();
		cptnpnlReceptor.setContentWidget(datosCliente_1);
		datosCliente_1.setSize("458px", "78px");
		
		horizontalPanel = new HorizontalPanel();
		flexTable.setWidget(2, 0, horizontalPanel);
		horizontalPanel.setSize("auto", "auto");
		
		horizontalPanel_1 = new HorizontalPanel();
		horizontalPanel.add(horizontalPanel_1);
		horizontalPanel_1.setSize("auto", "auto");
		
		cptnpnlAlmacenOrigen = new CaptionPanel("Almacen Origen");
		horizontalPanel_1.add(cptnpnlAlmacenOrigen);
		cptnpnlAlmacenOrigen.setSize("263px", "170px");
		
		datosAlmacen = new DatosAlmacen();
		cptnpnlAlmacenOrigen.setContentWidget(datosAlmacen);
		datosAlmacen.setSize("auto", "auto");
		
		horizontalPanel_2 = new HorizontalPanel();
		horizontalPanel.add(horizontalPanel_2);
		horizontalPanel_2.setSize("auto", "auto");
		
		cptnpnlAlmacenDestino = new CaptionPanel("Almacen Destino");
		horizontalPanel_2.add(cptnpnlAlmacenDestino);
		cptnpnlAlmacenDestino.setSize("263px", "170px");
		
		datosAlmacen_1 = new DatosAlmacen();
		cptnpnlAlmacenDestino.setContentWidget(datosAlmacen_1);
		datosAlmacen_1.setSize("auto", "auto");
		
		cptnpnlInformacionRutas = new CaptionPanel("Informacion rutas");
		flexTable.setWidget(3, 0, cptnpnlInformacionRutas);
		cptnpnlInformacionRutas.setHeight("76px");
		
		flexTable_1 = new FlexTable();
		cptnpnlInformacionRutas.setContentWidget(flexTable_1);
		flexTable_1.setSize("558px", "3cm");
		
		lblNewLabel = new Label("New label");
		flexTable_1.setWidget(0, 0, lblNewLabel);
		
		btnVerRuta = new Button("Ver ruta");
		
		flexTable_1.setWidget(0, 1, btnVerRuta);
	}
	public void llenarDatosCliente(ClienteDTO clienteEmisor,ClienteDTO clienteReceptor){
		datosCliente.llenarDatos(clienteEmisor);
		datosCliente_1.llenarDatos(clienteReceptor);
	}
	public void llenarDatosAlmacen(AlmacenDTO origen,AlmacenDTO destino){
		datosAlmacen.llenarInfoAlmacen(origen);
		datosAlmacen_1.llenarInfoAlmacen(destino);
	}
	public void llenarRutas(final RutasVueloEnvio rutas){
		btnVerRuta.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				dibujarRuta(rutas);
			}
		});
		String cad="";
		for ( VueloEnvio v : rutas.vuelos){
			cad+=" ciudad : "+v.descripcion;
		}
		lblNewLabel.setText(cad);
	}
	
	@Override
	public boolean isValid() {
		// TODO Auto-generated method stub
		return true;
	}

	@Override
	public String getError() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void clear() {
		datosCliente_1.clear();
		datosCliente.clear();
		datosAlmacen.clear();
		datosAlmacen_1.clear();
		return;
	}
	@Override
	public Widget getWidget(){
		return this;
	}
	public void cargarDatos(DatosEnvioPaquete datos) {
		llenarDatosCliente(datos.getEmisor(),datos.getReceptor());
		llenarDatosAlmacen(datos.getOrigen(),datos.getDestino());
		llenarRutas(datos.getRutas());
	}
	@Override
	public void actualizar() {
		// TODO Auto-generated method stub
		return;
	}
	protected void dibujarRuta(RutasVueloEnvio rutas) {
		IServiciosMapaStaticAsync serviciosMapaStatic = GWT.create(IServiciosMapaStatic.class);
		serviciosMapaStatic.getRutaVuelo(rutas, new AsyncCallback<String>(){
			@Override
			public void onSuccess(String url) {
				RutaPaqueteDialog rutaPaqueteDialog = new RutaPaqueteDialog(url,-1);
				rutaPaqueteDialog.center();
				rutaPaqueteDialog.show();
			}
			@Override
			public void onFailure(Throwable caught) {
				Alerts.dialogErrorConexion();
			}
		});
	}
}

